DB4HLS

A database of Design Space Explorations

The database structure, implemented in MySQL, comprises a description of the design targeted for exploration, and that of the explored HLS optimizations applied to each design. Finally, it reports the resource and performance results obtained by synthesis. Each of these components is described more in detail in the following.

Similarly to the taxonomy adopted in MachSuite, applications are identified by the benchmark they belong to (e.g.: aes), by the algorithm they realize (e.g.: aes256_encrypt) and by the design implementing such algorithms. As an example, two variants are provided by MachSuite for the aes256_encrypt algorithm (one using lookup tables to store encryption keys and one generating the values online), each corresponding to a separate design specified as C++ code.

A descriptor of the HLS optimizations considered for the DSEs are stored as entries in configuration_space table. Multiple explorations (hence, rows in the configuration space table) for the same design are possible, corresponding to different choices of optimizations, or explorations targeting different tools/FPGAs, or even contributions from different researchers. An entry in the configuration space table is linked to many entries of the configuration table, where each entry indicates a specific element of the design space.

A line in the configuration table (that indicates the set of HLS optimizations defining a design space element) is linked to an entry in the implementation table. Furthermore, the implementation table provides additional information on each performed synthesis: the synthesis timestamp, the employed synthesis tool and version, and the targeted FPGA, and the machine used to synthesise the configuration. Finally, each implementation links to one or more entries in the resources_results and performance_results tables, which report the synthesis outcomes. Resources are expressed as employed Flip-Flops, Look-Up Tables, Block RAMs (BRAM) and DSP blocks, while performances are reported in terms of effective latency.

The Entity Relation Diagram above describe the structure of the DB4HLS database and the tables columns:

Database structure

Herein follows a detailed description of the different tables in DB4HLS of and the elements stored in them.

benchmark

Contains the information associated to a specific benchmark included in the databases. Its columns are:

  • name: name of the benchmark;
  • version: version of the benchmark considered for the DSE;
  • website: reference to the benchmark website to retrieve the specifications;
  • id_benchmark: automatically generated id of the benchmark;

benchmark_has_algorithm

This table links the different algorith available in the database to their original benchmark. Different algorithm may be included to different benchmarks. Its columns are:

  • id_benchmark: id of the benchmark;
  • id_algorithm: id of the algorithm;

algorithm

Contains the information related to a specific algorithm. Its columns are:

  • name: name of the algorithm stored in the database;
  • id_algorithm: automatically generated id of the algorithm;

design

Contains the information about the specific version of an algorithm, synthesizable from HLS tools contained in the database. Its columns are:

  • name: name of the desig to synthesise;
  • id_design: automatically generated id of the design;
  • id_algorithm: id of the algorithm implemented by the design;
  • relative_path: relative path of the source files with respect to the benchmark folder structure;
  • src_files: list of source files required by the syntehsis process;
  • testbench_files: testbench file requried to peform a co-simulation of the design;

configuration_space

Contains the information associated to the DSE performed for the target design. Its columns are:

  • configuration_space_descriptor: configuration space descriptor describing all the configurations considered during the exploration (for more information about the configuration space descriptor please refer to its documentation);
  • top_module: name of the top function to be synthesised in hardware with the synthesis tool;
  • id_configuration_space: automatically generated id of the configuration space;
  • id_design: id of the design considered to define the configuration space;
  • name: name identifying the configuration space defined for the DSE;

configuration

Contains the information associated to a specific configuration included in a configuration space. Its columns are:

  • id_configuration_space: id of the configuration space to which the configuration belongs;
  • hash_configuration: hash value identifying the configuration;
  • config: list of values describing the describing the elements caracterizing the configuration;
  • config_script: tcl script generated to syntehsise the configuration with the selected HLS tool;

implementation

Contains the information associated to the implementation of a specific configuration. Its columns are:

  • timeout: maximum time allowed to the HLS tool to complete the synthesis;
  • hls_execution_time: time requried by the HLS tool to complete the synthesis;
  • hls_exit_value: exit value of the synthesis process (e.g., an exit value of 0 implies that the synthesis have been succesfully completed);
  • id_implementation: automatically generated id of the implmentation;
  • id_hls_tool: id of the HLS tool used synthesise the implementation;
  • id_host: id of the hosting machine used to synthesie the implementation;
  • id_performance_results: id of the perforance results associated to the implementation;
  • id_resource_results: id of the resource results associated to the implementation;
  • timestamp: timestamp of the generated implementation;
  • hash_configuration: hash value associated to the synthesised configuration;

resources_results

Contains the resource results generated by the synthesis tool after the HLS process. Its columns are:

  • hls_ff: number of FFs estimated by the HLS proces;
  • hls_lut: number of LUTs estimated by the HLS proces;
  • hls_dsp: number of DSPs estimated by the HLS proces;
  • hls_bram: number of BRAMs estimated by the HLS proces;
  • id_resource_results: automatically generated id of the resource results;

performance_results

Contains the performance results generated by the synthesis tool after the HLS process. Its columns are:

  • estimated_clock: required clock period estimated by the HLS tool;
  • target_clock: target clock specified before the synthesis process;
  • best_latency: best latency, in number of clock cycles, estimated by the HLS tool;
  • worst_latency: worst latency, in number of clock cycles, estimated by the HLS tool;
  • initiation_interval_min: minimum initiation interval, in number of clock cycles, estimated by the HLS tool;
  • initiation_interval_max: maximum initiation interval, in number of clock cycles, estimated by the HLS tool;
  • id_performance_result: automatically generated id of the performance results;
  • average_latency: average latency, in number of clock cycles, estimated by the HLS tool;

host

Contains the informations associated to the host machine synthesising an implementaion. Its columns are:

  • n_cpu: number of CPU available on the hosting machine;
  • cpu_frequency: CPU frequency of the hosting machine;
  • memory: avaliable RAM memory on the hosting machine;
  • idMachine: automatically generated id of the host;
  • architecture: architecture type of the hosting machine;
  • cpu_model: CPU model of the hosting machine;
  • cpu_family: CPU family of the hosting machine;

hls_tool

Contains information about the HLS tool used to synthesise the implementation. Its columns are:

  • name: name of the HLS tool;
  • version: version of the HLS tool;
  • vendor: name of the HLS tool vendor;
  • technology: model of the FPGA target of the syntehsis;
  • id_hls_tool: automatically generated id of the HLS tool;

Download

The last version of DB4HLS can be downloaded here:

Interacting with DB4HLS

The database content can be easly accessed with SQL queries. Please refer to the tutorial page for few examples showcasing how to retrieve the data from the database.

If you have any question about the database, or you are interested in expanding it, please contact me at [email protected].

Author

Lorenzo Ferretti, Ph.D., PostDoc at Università della Svizzera italiana (USI).
You can find more information about my work here and for any question you can contact me at [email protected].